/*
 * $Id: $
 */
package org.rcgwt.client.ui.grid.renderer;

import org.rcgwt.client.ui.grid.internal.model.IElementModelDelta;
import org.rcgwt.client.ui.grid.internal.model.IGridModel;

import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IGridRenderer {

    IGridRenderContext createRenderContext(IGridModel gridModel);

    Element renderRoot(IGridRenderContext gridRenderContext, Document document);

    void postRenderRoot(IGridRenderContext gridRenderContext,
            Element gridElement);

    void render(IGridRenderContext gridRenderContext, Element gridElement);

    void processDelta(IGridRenderContext gridRenderContext,
            Element gridElement,
            IElementModelDelta<IGridModel> modelElementDelta);

    void update(IGridRenderContext gridRenderContext, Element gridElement);
}
